package jp.seraph.jsade.util;

/**
 * 角度演算メソッドを含むユーティリティ
 */
public class GeometoryUtil {
    private GeometoryUtil(){

    }

    public static double degreeToRad(double aDegree){
        return Math.toRadians(aDegree);
    }

    public static double radToDegree(double aRad){
        return Math.toDegrees(aRad);
    }

    /**
     * 与えられた角度aDegreeを(-180, 180]に正規化して返す。
     *
     * @param aDegree
     * @return
     */
    public static double normalizeAngleAsDegree(double aDegree){
        while(aDegree <= -180)
            aDegree += 360;
        while(aDegree > 180)
            aDegree -= 360;

        return aDegree;
    }

    /**
     * 与えられた角度aRadを(-PI, PI]に正規化して返す。
     *
     * @param aRad
     * @return
     */
    public static double normalizeAngleAsRad(double aRad){
        double tCircle = 2 * Math.PI;
        while(aRad <= -Math.PI)
            aRad += tCircle;

        while(aRad > Math.PI)
            aRad -= tCircle;

        return aRad;
    }
}
